![]() |
![]() |
|
Die Umschaltung erfolgt in der Symbolleiste des Klassendesigners (siehe Abbildung 8.6).
Abbildung 8.6 Die Symbolleiste des Klassendesigners In Abbildung 8.7 sehen Sie die Klasse Circle, die wir in den vorhergehenden Kapiteln Schritt für Schritt entwickelt haben. Ganz links ist die visualisierte Klasse ohne Member-Liste zu sehen, in der Mitte mit Member-Liste und Bezeichner und rechts außen die maximale Darstellung, also einschließlich der gesamten Signatur.
Abbildung 8.7 Die verschiedenen Typansichten im Klassendiagramm Die vorgabemäßige Gruppierung der Klassenmitglieder erfolgt in den Kategorien der Member-Typen. Der Klassendesigner gestattet Ihnen auch, alle Member nach Zugriffsmodifizierern zu sortieren. Die Umschaltung zwischen diesen beiden Ansichten erfolgt in der Symbolleiste des Klassendesigners mit den beiden linken Schaltflächen. 8.2.3 Die Toolbox des Klassendesigners
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Methoden |
| Eigenschaften |
| Felder |
| Ereignisse |
| Konstruktoren |
| Destruktoren |
| Konstanten |
Das Fenster hat eine linksbündige Symbolleiste mit fünf Schaltflächen. Die unteren vier dienen der Navigation innerhalb der Liste. Mit der oberen können Sie alle denkbaren Mitglieds-typen hinzufügen, einschließlich der Angabe von Typ und Zugriffsmodifizierer. Die Spalte Zusammenfassung unterstützt das <summary>-Tag der XML-Dokumentation.
Die rechte Spalte Ausblenden hat keinen Einfluss auf die Klassendefinition und wirkt sich nur auf die Anzeige des betreffenden Members im Klassendiagramm aus.

Hier klicken, um das Bild zu Vergrößern
Abbildung 8.9 Das Fenster »Klassendetails«
Jeder Methodeneintrag ist mit einem Knoten versehen. Wenn Sie diesen öffnen, können Sie für die entsprechende Methode alle notwendigen Parameter definieren. Geben Sie den Parameternamen an, tragen Sie den gewünschten Datentyp ein, und – falls erforderlich – wählen Sie einen Parametermodifizierer aus der Liste der Spalte Modifizierer aus. In Abbildung 8.9 wurde auf diese Weise die Methode TestProc zum Modul Module1 hinzugefügt. Wie schon angedeutet, synchronisiert das Visual Studio 2005 Klassendesigner und Code.
Vielleicht fällt Ihnen auf, dass die Modifizierer, die im Zusammenhang mit der Vererbung stehen, nicht zur Auswahl anstehen: MustOverride, Overrides, Overridable, NotOverridable. Tatsächlich können diese nur im Eigenschaftsfenster der ausgewählten Methode eingestellt werden. Das Eigenschaftsfenster sollten wir uns noch etwas genauer ansehen, denn hier bieten sich noch weitere Optionen an, die nicht nur die Vererbungsmodifizierer betreffen.

Hier klicken, um das Bild zu Vergrößern
Abbildung 8.10 Das Eigenschaftsfenster einer Methode im Klassendesigner
| Eigenschaft | Beschreibung |
| Benutzerdefinierte Attribute | Der Name ist ein wenig irreführend. Tatsächlich können Sie hier alle Attribute angeben, die mit der Methode verknüpft werden sollen. |
| Freigegeben | Der Bezeichner dieser Einstellung im Eigenschaftsfenster ist ein wenig unglücklich gewählt. Mit der Einstellung True wird dieses Member zu einem statischen (Shared) Mitglied. |
| Hinweise | Gibt den Inhalt des <remarks>-Tags der XML-Dokumentation an. |
| Name | Der Bezeichner des Members. |
| Rückgabewerte | Gibt den Inhalt des <returns>-Tags der XML-Dokumentation an. |
| Typ | Gibt den Rückgabetyp des Members an. |
| Vererbungsmodifizierer | Hier geben Sie an, welcher Modifizierer, der im Zusammenhang mit der Vererbung steht, der Signatur hinzugefügt werden soll. |
| Zugriff | Gibt den Zugriffsmodifizierer an. |
| Zusammenfassung | Gibt den Inhalt des <summary>-Tags der XML-Dokumentation an. |
Was wir allerdings vermissen, ist die Möglichkeit, Shadows zum Verdecken eines geerbten Members einzustellen.
Das Hinzufügen der anderen Mitglieder (Konstruktoren, Eigenschaften etc.) unterscheidet sich nicht wesentlich von dem einer Methode. Daher erübrigt sich an dieser Stelle, darauf im Detail einzugehen. Auch für sie gilt, dass im Eigenschaftsfenster einige Optionen angeboten werden, die Sie im Fenster Klassendetails vermissen.
Seine Vorzüge spielt der Klassendesigner aus, wenn während der Designphase der Software die gesamte Klassenstruktur nebst allen Methodenrümpfen visuell, man kann es kaum passender ausdrücken, zusammengeschraubt wird. Dazu brauchen wir natürlich in erster Linie die Klassen, aus denen sich das Modell der Anwendung zusammensetzt.
Ziehen Sie dazu für jede gewünschte Klasse das Element Klasse aus der Toolbox in den Designer. Im Dialog, der sich daraufhin öffnet (siehe Abbildung 8.11), tragen Sie den Klassenbezeichner ein, wählen den Zugriffsmodifizierer aus der Liste aus und müssen sich dann auch entscheiden, ob Sie für die Klassendefinition eine neue Quellcodedatei wünschen. Wenn nicht, fügen Sie die neue Klasse einer vorhandenen Datei hinzu. Die Vererbungsmodifizierer legen Sie später im Eigenschaftsfenster fest.

Hier klicken, um das Bild zu Vergrößern
Abbildung 8.11 Dialog zum Hinzufügen einer neuen Klasse im Klassendesigner
Das Element Klasse der Toolbox ist einer Einschränkung unterworfen: Sie können damit leider keine generische Klasse bereitstellen. Das geht nur, wenn Sie die generische Klasse zuerst codieren und anschließend dem Klassendiagramm hinzufügen.
Ein wenig anders müssen Sie vorgehen, wenn Sie eine Klasse per Code definieren und im Projekt bereits ein Klassendiagramm vorhanden ist. Die neu codierte Klasse wird nicht automatisch dem Klassendiagramm hinzugefügt, sondern muss ausdrücklich hinzugefügt werden. Dazu öffnen Sie die Klassenansicht über das Menü Ansicht. Während im Projektmappen-Explorer die projektzugehörigen Dateien aufgeführt sind, finden Sie in der Klassenansicht alle Typdefinitionen des Projekts wieder, unabhängig von der Sourcecode-Datei. Ziehen Sie die Klasse, die Sie dem Klassendiagramm hinzufügen wollen, mittels Drag & Drop in das Klassendiagramm.
Benötigen Sie in Ihrem Projekt eine abstrakte Klasse, eine Schnittstelle, eine Enumeration, eine Struktur oder einen Delegaten, ändert sich nichts an der Vorgehensweise. Entweder Sie ziehen den gewünschten Typ aus der Toolbox in das Klassendiagramm oder, wenn bereits codiert, aus der Klassenansicht.
Fügen Sie Ihrem Projekt erstmalig ein Klassendiagramm hinzu, werden alle Typen des Projekts automatisch übernommen und dargestellt. Vielleicht sind Sie aber nur an einem Ausschnitt einer komplexen Klassenhierarchie interessiert. Markieren Sie dann einfach die unbenötigten Typen, und drücken Sie die (Entf)-Taste. Dabei erfolgt keine Synchronisation zwischen dem Klassendiagramm und dem Programmcode – die Typdefinition bleibt im Programmcode erhalten.
Möchten Sie jedoch gleichzeitig auch den Code des entsprechenden Typs löschen, öffnen Sie das Kontextmenü des markierten Elements. Hier finden Sie das Menüelement Code löschen, das Code und Klassendiagramm synchronisiert.
Wenn Sie jetzt von den Vorzügen des Klassendesigners überzeugt sind, werden Sie bestimmt versuchen, einen großen Teil der Entwicklungsarbeit mit diesem grafischen Tool zu erledigen. Dazu gehört auch, Klassen voneinander abzuleiten und Schnittstellen zu implementieren. In beiden Fällen hilft das Element Vererbung aus der Toolbox, dass nicht per Drag & Drop gezogen wird, sondern in der Toolbox einfach nur markiert werden muss. Danach ändert sich das Aussehen des Mauszeigers, der unten rechts ein zusätzliches Symbol zeigt.
Klicken Sie nun auf die Klasse, die eine der im Klassendiagramm visualisierten Schnittstellen implementieren soll, bzw. auf die Klasse, die zur abgeleiteten Klasse einer anderen Klasse werden soll. Anschließend klicken Sie auf die Schnittstelle oder, im anderen Fall, auf die Basisklasse.

Hier klicken, um das Bild zu Vergrößern
Abbildung 8.12 Vererbungslinien in einem Klassendiagramm
Eigenschaften und Felder einer Klasse lassen sich als Zuordnungen darstellen. Das Feld bzw. die Eigenschaft wird dann weder im Rahmen des Typs noch unter Klassendetails angezeigt. Stattdessen wird der Typ visualisiert. Ein Zuordnungspfeil mit einem entsprechenden Symbol, das mit dem Bezeichner des Mitglieds versehen ist, kennzeichnet die Zugehörigkeit als Eigenschaft oder Feld der Klasse.
In der folgenden Abbildung beschreibt Spannweite ein Feld des Typs Flugzeug. Spannweite ist vom Typ Double, der über einen Zuordnungspfeil mit der Klasse Flugzeug verknüpft ist. Sehr schön ist zu erkennen, welche Schnittstellen die Struktur Double implementiert. Auf die Anzeige der Member-Liste wurde hier jedoch verzichtet.

Hier klicken, um das Bild zu Vergrößern
Abbildung 8.13 Die Darstellung einer Zuordnung
Befindet sich im Klassendiagramm ein visualisierter Typ, der auch gleichzeitig Datentyp einer Eigenschaft oder einesFeldes ist, können Sie den Datentyp unter Klassendetails manuell eintragen. Es wird kein Zuordnungspfeil angezeigt, und das Feld bzw. die Eigenschaft wird im Rahmen der Klasse angezeigt. Markieren Sie im Klassenrahmen die Eigenschaft und öffnen das Kontextmenü, wird Ihnen die Option Als Zuordnung anzeigen angeboten. Diese bewirkt, dass der Datentyp in einem eigenen Rahmen angezeigt und zwischen Klasse und Datentyp ein Zuordnungspfeil dargestellt wird. Das Symbol oberhalb des Pfeils kennzeichnet, ob es sich um ein Feld oder eine Eigenschaft handelt. Daneben erscheint auch der Bezeichner des betreffenden Feldes bzw. der Eigenschaft.
Sie können das Element Zuordnung jedoch auch in der Toolbox markieren und anschließend den Zuordnungspfeil in gleicher Weise wie den der Vererbung auf die beiden betroffenen Rahmen ziehen.
Der Klassendesigner bietet Ihnen an, ein Klassendiagramm als Bild in verschiedenen Bildformaten zu exportieren. Damit wird Ihnen neben den entwicklungstechnischen Fähigkeiten des Klassendesigners ermöglicht, Dokumentationen anschaulich um die Darstellung der Struktur einer Klassenhierarchie zu ergänzen oder das Bild in eine Präsentation wie zum Beispiel MS PowerPoint zu integrieren. Zu den angebotenen Formaten zählen unter anderem auch BMP, GIF und JPEG.
Dazu öffnen Sie im Visual Studio 2005 das Menü Klassendiagramm und wählen im Untermenü Diagramm als Bild exportieren... Es öffnet sich ein Dialog, in dem Sie die zu exportierenden Klassendiagramme auswählen, die Speicherlokalität festlegen und aus einer Liste das gewünschte Bildformat einstellen können.
| << zurück |
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die
gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.